// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Obtineți Spini Gratuite la Casino Online Juca – Juca Acum! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Obtineți Spini Gratuite la Casino Online Juca – Juca Acum!

Cum să obțineți spini gratuite la casino online

Doriți să obțineți spini gratuite la un casino online? Aici aveți câteva metode sigure pentru a face acest lucru.
1. Înregistrați-vă la un nou casino online – Majoritatea casino-urilor online oferă spini gratuite ca incentiv pentru a vă înregistra cont.
2. Verificați ofertele de bun venit – Unele casino-uri online oferă spini gratuite ca parte a ofertei lor de bun venit.
3. Participați la programele de fidelitate – Majoritatea casino-urilor online au programe de fidelitate care vă recompensează pentru jocul regulat, inclusiv cu spini gratuite.
4. Mergeți la evenimentele speciale – Casino-urile online organizează adesea evenimente speciale, cum ar fi turnee, în care puteți câștiga spini gratuite.
5. Rămâneți la curent cu noutățile casino-ului – Urmați site-ul web și contul de social media al casino-ului pentru a fi informat despre ofertele speciale de spini gratuite.
6. Contactați echipa de suport – Dacă aveți probleme tehnice sau alte întrebări, contactați echipa de suport a casino-ului. Ei pot oferi spini gratuite ca gest de bun venit.
7. Verificați site-urile de cupoane – Există site-uri web care oferă cupoane pentru spini gratuite la diferite casino-uri online.
8. Joacă jocuri de slot progressive – Unele jocuri de slot progressive oferă spini gratuite ca bonus pentru a continua să jucați.

Juca acum și primește spini gratuite la casino online

Daca esti in cautarea unei experiente de joc emocionante, nu look further! Juca acum si primeste spini gratuite la unul dintre cele mai bune casinouri online. Nu isi pierde timpul cu cautarea unui loc unde sa se distreze – acesta este locul potrivit. Cu o librarie impresionanta de jocuri si o interfata ușor de utilizat, acest casino online este perfect pentru jucatorii de toate nivelurile de abilitate. Nu uita să te bucuri de oferta de spini gratuite – acesta este un mod uimitor de a experimenta ceea ce casino-ul online are de oferit fara sa riskezi proprii banii. Nu astepta mai mult, incepe sa joci acum si primeste spini gratuite!

Avantaje de a juca cu spini gratuite la casino online

Jucătorii din România pot beneficia de avantaje considerabile atunci când aleg să joace cu spini gratuite la casino-uri online.Avantajul principal este șansa de a câștiga premii fără a risca proprii bani.
De asemenea, pot testa noi jocuri și a se familiariza cu interfața casino-ului fără să facă un depunere.
Spinii gratuite pot fi, de asemenea, o oportunitate de a învăța strategii de joc și de a-și perfecționa abilitățile.
Uneori, casino-urile online oferă și turnee cu spini gratuite, unde jucătorii pot concura împotriva altor jucători pentru premii mari.
De asemenea, jucătorii pot obține spini gratuite ca recompensă pentru loialitate sau ca parte a unui program de fidelitate.
În plus, jocurile cu spini gratui atrag adesea promoții speciale și bonusuri, oferind jucătorilor mai multe oportunități de a câștiga.
Prin urmare, pentru cei care caută o cale plăcută și profitabilă de a experimenta lumea jocurilor de casino online, jocurile cu spini gratuite sunt o alegere excelentă.

Obtineți Spini Gratuite la Casino Online Juca - Juca Acum!

Ce să știeți despre spini gratuite la casino online

Doriți să experimentați jocurile de cazino online fără riscuri? Aflați ce trebuie să știeți despre spini gratuite la casino online.
1. Spini gratuite sunt oportunități de a face rotații gratuite la jocuri de slot machine online.
2. Acestea pot fi obținute ca bonus de depunere sau fără depunere.
3. Spini gratuite pot fi limitate la anumite jocuri de slot machine.
4. Unele spini gratuite au valoare de miză, în timp ce altele nu.
5. Verificați condițiile de derulare pentru a afla cât de repede puteți retrage câștigurile.
6. Spini gratuite pot fi legate de un cod promoțional sau automat acordate după înregistrare.
7. Există și spini gratuite fără depunere cu cerințe de joc mai ridicate.
8. Compărați oferte de spini gratuite de la mai multe cazinouri online pentru a alege cea mai bună afacere.

Top casino-uri online cu spini gratuite

Daca sunteti interesat de top casino-uri online cu spini gratuite, atunci sunteti la locul potrivit. Neamteamano, am creat o lista cu cele mai bune casino-uri online din Romania care ofera spini gratuite.1. Casino1 – primiti 20 de spini gratuite fara depunere.
2. Casino2 – primiti 30 de spini gratuite la inregistrare.
3. Casino3 – primiti 50 de spini gratuite la prima depunere.
4. Casino4 – primiti 100 de spini gratuite la depunerea dvs. de 50 de RON.
5. Casino5 – primiti 200 de spini gratuite la depunerea Player casino dvs. de 100 de RON.
6. Casino6 – primiti 500 de spini gratuite la depunerea dvs. de 200 de RON.
7. Casino7 – primiti 1000 de spini gratuite la depunerea dvs. de 300 de RON.
8. Casino8 – primiti 2000 de spini gratuite la depunerea dvs. de 500 de RON.

Strategii pentru a profita de spini gratuite la casino online

Daca sunteti interesati de jocuri de cazino online si doriti sa va bucurati de spini gratuite, este important sa stiti cum sa va advantageze de aceste oferte. In primul raspuns, trebuie sa va inregistrati la un casino online de încredere si sa va verificati daca ofera spini gratuite ca bonus de bun venit. In general, acestea sunt oferite catre noi in schimbul unui depunere minima.
De asemenea, puteti sa va abonati la newsletterle casino-urilor, deoarece acestea ofera adesea spini gratuite ca incentiv pentru a va menține angajați. Pe langa acestea, exista si alte strategii, precum participarea la turnee sau promotiile sezoniere, care pot oferi spini gratuite ca premiu.
In plus, este important sa cititi termenii si conditiile aferente fiecarui bonus de spini gratuite, deoarece acestea pot varia semnificativ intre casino-uri. De exemplu, unii casino-uri pot impune o anumita cota de joc inainte de a permite retragerea unor castigi.
In final, daca va place sa va jucati la jocuri de cazino online, spini gratuite pot fi o metoda buna de a va distra si, in acelasi timp, sa va creste sansele de castig. Orele petrecute la cazino pot fi atat distractive cat și profitabile, daca stiti cum sa va apro profitului!

Am fost la un casino online și am obținut spini gratuite! M-am înregistrat și am primit 20 de spini gratuite fără a face un depunere. Am câștigat câțiva bani și am fost în m position să mă distrez. Recomand casino-ul online acestuia oricui vrea să se distreze și să câștige câteva bani. Obtineți spini gratuite la casino online juca – juca acum!

M-am jucat la un casino online și nu am avut niciun fel de noroc. Am pierdut banii mei rapid și nu am primit niciun spini gratuit. Nu recomand acest casino online, deoarece nu este destul de generos. Există multe alte opțiuni mai bune. Obtineți spini gratuite la casino online juca – juca acum!

Casino-ul online mi-a păsat. Am încercat să obțin spini gratuite, dar nu mi-au fost acordate. Am depus bani și am pierdut totul. Nu am niciun motiv să revin la acest casino online. Există multe alte opțiuni mai bune. Obtineți spini gratuite la casino online juca – juca acum!

M-am distrat mult la acest casino online. Am primit spini gratuite și am câștigat câțiva bani. M-am simțit bine tratat și vreau să revin. Recomand acest casino online tuturor celor care vrea să se distreze și să câștige câteva bani. Obtineți spini gratuite la casino online juca – juca acum!

Nu am avut noroc la acest casino online. Am pierdut banii mei rapid și nu am primit niciun spini gratuit. Nu am simțit că sunt tratat bine și nu voi reveni. Există multe alte opțiuni mai bune. Obtineți spini gratuite la casino online juca – juca acum!

Obtineți Spini Gratuite la Casino Online Juca – Juca Acum!

Ai probleme cu obținerea spinilor gratuite la casino online?

Este posibil să obții spini gratuite fără realizați un depunere?

Cum pot să profițezi de cele mai bune oferte de spini gratuite?

Design and Develop by Ovatheme